//using System;
//using System.Collections.Generic;
//using System.Text;
//using System.Windows.Forms;
//using System.Drawing;
//using TreeView.Logic;
//using System.Collections;

//namespace TreeView.Graphic
//{
//    public class RadTreeGUI
//    {
//        ArrayList guiTreeNodes;
//        Panel paintBoard;
//        Panel propertiesBoard;
//        Label nameLable;
               

//        #region Constructors
        
//        public RadTreeGUI(Panel pnlView, Panel pnlProp,Label lblName, ArrayList treeNodes)
//        {
//            guiTreeNodes=new ArrayList();
//            foreach (RadialTreeNode node in treeNodes)
//            {
//                guiTreeNodes.Add(node.NodeGUI);
//            }
//            //root = newRoot;
//            paintBoard = pnlView;
//            propertiesBoard = pnlProp;
//            nameLable = lblName;
//        }

//        public RadTreeGUI(ArrayList treeNodes)
//        {
//            guiTreeNodes = new ArrayList();
//            foreach (RadialTreeNode node in treeNodes)
//            {
//                guiTreeNodes.Add(node.NodeGUI);
//            }
//            paintBoard = null;
//            propertiesBoard = null;
//            nameLable = null;
//        }
        
//        #endregion

//        #region Properties

//        public Panel PaintBoard
//        {
//            set { paintBoard = value; }
//            get { return paintBoard; }
//        }
//        public Panel PropertiesBoard
//        {
//            set { propertiesBoard = value; }
//            get { return propertiesBoard; }
//        }
//        public Label NameLable
//        {
//            set { nameLable = value; }
//            get { return nameLable; }
//        }

//        public ArrayList GuiNodes
//        {
//            get { return guiTreeNodes; }
//            set { guiTreeNodes = value; }
//        }

       
//        #endregion

//        #region Methods


//        //private static double HuetoRGB(double m1, double m2, double h)
//        //{
//        //    if ( h < 0 ) {
//        //        h = 1.0;
//        //    }
//        //    if ( h > 1 ) {
//        //        h = 1.0;
//        //    }
//        //    if ( 6.0*h < 1 ) {
//        //        return (m1 + (m2 - m1) * h * 6.0);
//        //    }
//        //    if ( 2.0*h < 1 ) {
//        //        return m2;
//        //    }
//        //    if ( 3.0*h < 2.0 ) {
//        //        return (m1 + (m2 - m1) * ((2.0 / 3.0) - h) * 6.0);
//        //    }
//        //    return m1;
//        //}
//        ///**
//        // * Converte an HLS color to RGB color
//        // * 
//        // * @example <listing version="3.0">
//        // * 
//        // * ColorUtils.HLStoRGB(34,3,23);
//        // * 
//        // * </listing>
//        // * 
//        // * @param h Hue value 
//        // * @param l Luminance value
//        // * @param s Saturation value
//        // *
//        // * @return an integer that represents an RGB color.
//        // */ 
//        //public static Color HLStoRGB(double H,double L,double S) 
//        //{
//        //    int r, g, b;
//        //    double TempR,TempG,TempB,m1,m2;
		
//        //    if (S==0) {
//        //        TempR = TempG = TempB = L;
//        //    } else {
//        //        if (L <=0.5) {
//        //            m2 = L*(1.0+S);
//        //        } else {
//        //            m2 = L+S-L*S;
//        //        }
//        //        m1 = 2.0*L-m2;
//        //        TempR = HuetoRGB(m1, m2, H + 1.0 / 3.0);
//        //        TempG = HuetoRGB(m1, m2, H);
//        //        TempB = HuetoRGB(m1, m2, H - 1.0 / 3.0);
//        //    }
//        //    r = (int)(TempR * 255) % 255;
//        //    g = (int)(TempG * 255) % 255;
//        //    b = (int)(TempB * 255) % 255;
//        //    return Color.FromArgb(r,g,b);
//        //}

//        public void printTree()
//        {
//            //ArrayList arrayTree = root.LogicNode.ToPostOrder();
//            foreach (RadNodeGUI node in guiTreeNodes)
//            {
//                node.paintNode((panel)paintBoard);
//            }
//            foreach (RadNodeGUI node in guiTreeNodes)
//            {
//                node.paintBody(paintBoard);
//            }
//        }

//        public RadNodeGUI findContain(int x, int y, RadNodeGUI root)
//        {
//            try
//            {
//                RadNodeGUI FounNode = null;
//                foreach (RadNodeGUI node in guiTreeNodes)
//                {
//                    if (node.NodeBody.Contains(x, y))
//                        FounNode = node;
//                    node.resetBrush();
//                }
//                return FounNode;
//            }
//            catch (NullReferenceException)
//            {
//                MessageBox.Show("The tree is empty", "Error!!!");
//                return null;
//            }
//        }
        
//        public void onMousMove(RadNodeGUI node,MouseEventArgs e)
//        {
//            if (node != null)
//            {
//                this.printTree();
//                Cursor.Current = Cursors.Hand;
//                node.NodeBrush = Brushes.Red;
//                node.paintBody(paintBoard);
//                if (node.LogicNode.isLeaf())
//                {
//                    nameLable.Text = node.LogicNode.Name;
//                    nameLable.Refresh();
//                }
//                else
//                {
//                    //need to be here the code which initialize the pie in the right side of the panel
//                    using (Graphics g = propertiesBoard.CreateGraphics())
//                    {
//                        propertiesBoard.Refresh();
//                        g.DrawPie(Pens.Black, propertiesBoard.Width / 3, propertiesBoard.Height / 3, propertiesBoard.Width / 2 - 50, propertiesBoard.Width / 2 - 50, 0, node.LogicNode.Key * 20);
//                    }
//                }
//            }
         
//        }



//        internal RadialTree onMousClick(double newTeta,RadNodeGUI foundNode, RadialTree DispTree,RadTreeGUI GuiTree ,MouseEventArgs e)
//        {
//            if (foundNode != null)
//            {
//                DispTree = DispTree.SubRadialTree(foundNode.LogicNode, newTeta);
//                DispTree.createGUIRadTree(DispTree.TreeNodes, paintBoard.Width, paintBoard.Height);
//                //DispTree.createGUIRadTree(DispTree.Root, Pnl_TreeShow.Width, Pnl_TreeShow.Height);
//                //GuiTree.Root = DispTree.Root.NodeGUI;
//                GuiTree.GuiNodes = new ArrayList();
//                foreach(RadialTreeNode node in DispTree.TreeNodes)
//                    GuiTree.guiTreeNodes.Add(node.NodeGUI);
//            }
//            paintBoard.Refresh();
//            return DispTree;
            
//        }

//        #endregion





//    }
//}
